// import { titleCase } from '@/utils/index'
// import { trigger } from './config'
// // 文件大小设置
// const units = {
//   KB: '1024',
//   MB: '1024 / 1024',
//   GB: '1024 / 1024 / 1024',
// }
// /**
//  * @name: 生成js需要的数据
//  * @description: 生成js需要的数据
//  * @param {*} conf
//  * @param {*} type 弹窗或表单
//  * @return {*}
//  */
// export function makeUpJs(conf, type) {
//   conf = JSON.parse(JSON.stringify(conf))
//   const dataList = []
//   const ruleList = []
//   const optionsList = []
//   const propsList = []
//   const methodList = []
//   const uploadVarList = []

//   conf.fields.forEach((el) => {
//     buildAttributes(
//       el,
//       dataList,
//       ruleList,
//       optionsList,
//       methodList,
//       propsList,
//       uploadVarList
//     )
//   })

//   const script = buildexport(
//     conf,
//     type,
//     dataList.join('\n'),
//     ruleList.join('\n'),
//     optionsList.join('\n'),
//     uploadVarList.join('\n'),
//     propsList.join('\n'),
//     methodList.join('\n')
//   )
  
//   return script
// }
// /**
//  * @name: 生成参数
//  * @description: 生成参数，包括表单数据表单验证数据，多选选项数据，上传数据等
//  * @return {*}
//  */
// function buildAttributes(
//   el,
//   dataList,
//   ruleList,
//   optionsList,
//   methodList,
//   propsList,
//   uploadVarList
// ){
//   buildData(el, dataList)
//   buildRules(el, ruleList)

//   if (el.options && el.options.length) {
//     buildOptions(el, optionsList)
//     if (el.dataType === 'dynamic') {
//       const model = `${el.vModel}Options`
//       const options = titleCase(model)
//       buildOptionMethod(`get${options}`, model, methodList)
//     }
//   }

//   if (el.props && el.props.props) {
//     buildProps(el, propsList)
//   }

//   if (el.action && el.tag === 'el-upload') {
//     uploadVarList.push(
//       `
//       // 上传请求路径
//       const ${el.vModel}Action = ref('${el.action}')
//       // 上传文件列表
//       const ${el.vModel}fileList =  ref([])`
//     )
//     methodList.push(buildBeforeUpload(el))
//     if (!el['auto-upload']) {
//       methodList.push(buildSubmitUpload(el))
//     }
//   }

//   if (el.children) {
//     el.children.forEach((el2) => {
//       buildAttributes(
//         el2,
//         dataList,
//         ruleList,
//         optionsList,
//         methodList,
//         propsList,
//         uploadVarList
//       )
//     })
//   }
// }
// /**
//  * @name: 生成表单数据formData
//  * @description: 生成表单数据formData
//  * @param {*} conf
//  * @param {*} dataList 数据列表
//  * @return {*}
//  */
// function buildData(conf, dataList) {
//   if (conf.vModel === undefined) return
//   let defaultValue
//   if (typeof conf.defaultValue === 'string' && !conf.multiple) {
//     defaultValue = `'${conf.defaultValue}'`
//   } else {
//     defaultValue = `${JSON.stringify(conf.defaultValue)}`
//   }
//   dataList.push(`${conf.vModel}: ${defaultValue},`)
// }
// /**
//  * @name: 生成表单验证数据rule
//  * @description: 生成表单验证数据rule
//  * @param {*} conf
//  * @param {*} ruleList 验证数据列表
//  * @return {*}
//  */
// function buildRules(conf, ruleList) {
//   if (conf.vModel === undefined) return
//   const rules = []
//   if (trigger[conf.tag]) {
//     if (conf.required) {
//       const type = Array.isArray(conf.defaultValue) ? "type: 'array'," : ''
//       let message = Array.isArray(conf.defaultValue)
//         ? `请至少选择一个${conf.vModel}`
//         : conf.placeholder
//       if (message === undefined) message = `${conf.label}不能为空`
//       rules.push(
//         `{ required: true, ${type} message: '${message}', trigger: '${
//           trigger[conf.tag]
//         }' }`
//       )
//     }
//     if (conf.regList && Array.isArray(conf.regList)) {
//       conf.regList.forEach((item) => {
//         if (item.pattern) {
//           rules.push(
//             `{ pattern: new RegExp(${item.pattern}), message: '${
//               item.message
//             }', trigger: '${trigger[conf.tag]}' }`
//           )
//         }
//       })
//     }
//     ruleList.push(`${conf.vModel}: [${rules.join(',')}],`)
//   }
// }
// /**
//  * @name: 生成选项数据
//  * @description: 生成选项数据，单选多选下拉等
//  * @param {*} conf
//  * @param {*} optionsList 选项数据列表
//  * @return {*}
//  */
// function buildOptions(conf, optionsList) {
//   if (conf.vModel === undefined) return
//   if (conf.dataType === 'dynamic') {
//     conf.options = []
//   }
//   const str = `const ${conf.vModel}Options = ref(${JSON.stringify(conf.options)})`
//   optionsList.push(str)
// }
// /**
//  * @name: 生成方法
//  * @description: 生成方法
//  * @param {*} methodName 方法名
//  * @param {*} model
//  * @param {*} methodList 方法列表
//  * @return {*}
//  */
// function buildOptionMethod(methodName, model, methodList) {
//   const str = `function ${methodName}() {
//     // TODO 发起请求获取数据
//     ${model}.value
//   }`
//   methodList.push(str)
// }
// /**
//  * @name: 生成表单组件需要的props设置
//  * @description: 生成表单组件需要的props设置，如；级联组件
//  * @param {*} conf
//  * @param {*} propsList
//  * @return {*}
//  */
// function buildProps(conf, propsList) {
//   if (conf.dataType === 'dynamic') {
//     conf.valueKey !== 'value' && (conf.props.props.value = conf.valueKey)
//     conf.labelKey !== 'label' && (conf.props.props.label = conf.labelKey)
//     conf.childrenKey !== 'children' &&
//       (conf.props.props.children = conf.childrenKey)
//   }
//   const str = `
//   // props设置
//   const ${conf.vModel}Props = ref(${JSON.stringify(conf.props.props)})`
//   propsList.push(str)
// }
// /**
//  * @name: 生成上传组件的相关内容
//  * @description: 生成上传组件的相关内容
//  * @param {*} conf
//  * @return {*}
//  */
// function buildBeforeUpload(conf) {
//   const unitNum = units[conf.sizeUnit]
//   let rightSizeCode = ''
//   let acceptCode = ''
//   const returnList = []
//   if (conf.fileSize) {
//     rightSizeCode = `let isRightSize = file.size / ${unitNum} < ${conf.fileSize}
//     if(!isRightSize){
//       proxy.$modal.msgError('文件大小超过 ${conf.fileSize}${conf.sizeUnit}')
//     }`
//     returnList.push('isRightSize')
//   }
//   if (conf.accept) {
//     acceptCode = `let isAccept = new RegExp('${conf.accept}').test(file.type)
//     if(!isAccept){
//       proxy.$modal.msgError('应该选择${conf.accept}类型的文件')
//     }`
//     returnList.push('isAccept')
//   }
//   const str = `
//   /**
//    * @name: 上传之前的文件判断
//    * @description: 上传之前的文件判断，判断文件大小文件类型等
//    * @param {*} file
//    * @return {*}
//    */  
//   function ${conf.vModel}BeforeUpload(file) {
//     ${rightSizeCode}
//     ${acceptCode}
//     return ${returnList.join('&&')}
//   }`
//   return returnList.length ? str : ''
// }
// /**
//  * @name: 生成提交表单方法
//  * @description: 生成提交表单方法
//  * @param {Object} conf vModel 表单ref
//  * @return {*}
//  */
// function buildSubmitUpload(conf) {
//   const str = `function submitUpload() {
//     this.$refs['${conf.vModel}'].submit()
//   }`
//   return str
// }
// /**
//  * @name: 组装js代码
//  * @description: 组装js代码方法
//  * @return {*}
//  */
// function buildexport(
//   conf,
//   type,
//   data,
//   rules,
//   selectOptions,
//   uploadVar,
//   props,
//   methods
// ) {
//   let str = `
//     const { proxy } = getCurrentInstance()
//     const ${conf.formRef} = ref()
//     const data = reactive({
//       ${conf.formModel}: {
//         ${data}
//       },
//       ${conf.formRules}: {
//         ${rules}
//       }
//     })

//     const {${conf.formModel}, ${conf.formRules}} = toRefs(data)

//     ${selectOptions}

//     ${uploadVar}

//     ${props}

//     ${methods}
//   `
  
//   if(type === 'dialog') {
//     str += `
//       // 弹窗设置
//       const dialogVisible = defineModel()
//       // 弹窗确认回调
//       const emit = defineEmits(['confirm'])
//       /**
//        * @name: 弹窗打开后执行
//        * @description: 弹窗打开后执行方法
//        * @return {*}
//        */
//       function onOpen(){

//       }
//       /**
//        * @name: 弹窗关闭时执行
//        * @description: 弹窗关闭方法，重置表单
//        * @return {*}
//        */
//       function onClose(){
//         ${conf.formRef}.value.resetFields()
//       }
//       /**
//        * @name: 弹窗取消
//        * @description: 弹窗取消方法
//        * @return {*}
//        */
//       function close(){
//         dialogVisible.value = false
//       }
//       /**
//        * @name: 弹窗表单提交
//        * @description: 弹窗表单提交方法
//        * @return {*}
//        */
//       function handelConfirm(){
//         ${conf.formRef}.value.validate((valid) => {
//           if (!valid) return
//           // TODO 提交表单

//           close()
//           // 回调父级组件
//           emit('confirm')
//         })
//       }
//     `
//   } else {
//     str += `
//     /**
//      * @name: 表单提交
//      * @description: 表单提交方法
//      * @return {*}
//      */
//     function submitForm() {
//       ${conf.formRef}.value.validate((valid) => {
//         if (!valid) return
//         // TODO 提交表单
//       })
//     }
//     /**
//      * @name: 表单重置
//      * @description: 表单重置方法
//      * @return {*}
//      */
//     function resetForm() {
//       ${conf.formRef}.value.resetFields()
//     }
//     `
//   }
//   return str
// }
